{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "5ea4dc34",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib as mpl\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "73edcba4",
   "metadata": {},
   "source": [
    "# 导入数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "878d2d9c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Channel</th>\n",
       "      <th>Region</th>\n",
       "      <th>Fresh</th>\n",
       "      <th>Milk</th>\n",
       "      <th>Grocery</th>\n",
       "      <th>Frozen</th>\n",
       "      <th>Detergents_Paper</th>\n",
       "      <th>Delicassen</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>12669</td>\n",
       "      <td>9656</td>\n",
       "      <td>7561</td>\n",
       "      <td>214</td>\n",
       "      <td>2674</td>\n",
       "      <td>1338</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>7057</td>\n",
       "      <td>9810</td>\n",
       "      <td>9568</td>\n",
       "      <td>1762</td>\n",
       "      <td>3293</td>\n",
       "      <td>1776</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>6353</td>\n",
       "      <td>8808</td>\n",
       "      <td>7684</td>\n",
       "      <td>2405</td>\n",
       "      <td>3516</td>\n",
       "      <td>7844</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>13265</td>\n",
       "      <td>1196</td>\n",
       "      <td>4221</td>\n",
       "      <td>6404</td>\n",
       "      <td>507</td>\n",
       "      <td>1788</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>22615</td>\n",
       "      <td>5410</td>\n",
       "      <td>7198</td>\n",
       "      <td>3915</td>\n",
       "      <td>1777</td>\n",
       "      <td>5185</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Channel  Region  Fresh  Milk  Grocery  Frozen  Detergents_Paper  Delicassen\n",
       "0        2       3  12669  9656     7561     214              2674        1338\n",
       "1        2       3   7057  9810     9568    1762              3293        1776\n",
       "2        2       3   6353  8808     7684    2405              3516        7844\n",
       "3        1       3  13265  1196     4221    6404               507        1788\n",
       "4        2       3  22615  5410     7198    3915              1777        5185"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df1 = pd.read_csv('./Wholesale customers data.csv',sep = ',')\n",
    "df1.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c74f21ef",
   "metadata": {},
   "source": [
    "## 查询缺失值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "2a569bef",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Channel</th>\n",
       "      <th>Region</th>\n",
       "      <th>Fresh</th>\n",
       "      <th>Milk</th>\n",
       "      <th>Grocery</th>\n",
       "      <th>Frozen</th>\n",
       "      <th>Detergents_Paper</th>\n",
       "      <th>Delicassen</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "Empty DataFrame\n",
       "Columns: [Channel, Region, Fresh, Milk, Grocery, Frozen, Detergents_Paper, Delicassen]\n",
       "Index: []"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df1[df1.isnull().values==True]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "d7e3a3ca",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 440 entries, 0 to 439\n",
      "Data columns (total 8 columns):\n",
      " #   Column            Non-Null Count  Dtype\n",
      "---  ------            --------------  -----\n",
      " 0   Channel           440 non-null    int64\n",
      " 1   Region            440 non-null    int64\n",
      " 2   Fresh             440 non-null    int64\n",
      " 3   Milk              440 non-null    int64\n",
      " 4   Grocery           440 non-null    int64\n",
      " 5   Frozen            440 non-null    int64\n",
      " 6   Detergents_Paper  440 non-null    int64\n",
      " 7   Delicassen        440 non-null    int64\n",
      "dtypes: int64(8)\n",
      "memory usage: 27.6 KB\n"
     ]
    }
   ],
   "source": [
    "df1.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1685684f",
   "metadata": {},
   "source": [
    "## 查看数据描述"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "8831eb6c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Channel</th>\n",
       "      <th>Region</th>\n",
       "      <th>Fresh</th>\n",
       "      <th>Milk</th>\n",
       "      <th>Grocery</th>\n",
       "      <th>Frozen</th>\n",
       "      <th>Detergents_Paper</th>\n",
       "      <th>Delicassen</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>440.000000</td>\n",
       "      <td>440.000000</td>\n",
       "      <td>440.000000</td>\n",
       "      <td>440.000000</td>\n",
       "      <td>440.000000</td>\n",
       "      <td>440.000000</td>\n",
       "      <td>440.000000</td>\n",
       "      <td>440.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>1.322727</td>\n",
       "      <td>2.543182</td>\n",
       "      <td>12000.297727</td>\n",
       "      <td>5796.265909</td>\n",
       "      <td>7951.277273</td>\n",
       "      <td>3071.931818</td>\n",
       "      <td>2881.493182</td>\n",
       "      <td>1524.870455</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>0.468052</td>\n",
       "      <td>0.774272</td>\n",
       "      <td>12647.328865</td>\n",
       "      <td>7380.377175</td>\n",
       "      <td>9503.162829</td>\n",
       "      <td>4854.673333</td>\n",
       "      <td>4767.854448</td>\n",
       "      <td>2820.105937</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>55.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>25.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>3.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>3127.750000</td>\n",
       "      <td>1533.000000</td>\n",
       "      <td>2153.000000</td>\n",
       "      <td>742.250000</td>\n",
       "      <td>256.750000</td>\n",
       "      <td>408.250000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>8504.000000</td>\n",
       "      <td>3627.000000</td>\n",
       "      <td>4755.500000</td>\n",
       "      <td>1526.000000</td>\n",
       "      <td>816.500000</td>\n",
       "      <td>965.500000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>2.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>16933.750000</td>\n",
       "      <td>7190.250000</td>\n",
       "      <td>10655.750000</td>\n",
       "      <td>3554.250000</td>\n",
       "      <td>3922.000000</td>\n",
       "      <td>1820.250000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>2.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>112151.000000</td>\n",
       "      <td>73498.000000</td>\n",
       "      <td>92780.000000</td>\n",
       "      <td>60869.000000</td>\n",
       "      <td>40827.000000</td>\n",
       "      <td>47943.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          Channel      Region          Fresh          Milk       Grocery  \\\n",
       "count  440.000000  440.000000     440.000000    440.000000    440.000000   \n",
       "mean     1.322727    2.543182   12000.297727   5796.265909   7951.277273   \n",
       "std      0.468052    0.774272   12647.328865   7380.377175   9503.162829   \n",
       "min      1.000000    1.000000       3.000000     55.000000      3.000000   \n",
       "25%      1.000000    2.000000    3127.750000   1533.000000   2153.000000   \n",
       "50%      1.000000    3.000000    8504.000000   3627.000000   4755.500000   \n",
       "75%      2.000000    3.000000   16933.750000   7190.250000  10655.750000   \n",
       "max      2.000000    3.000000  112151.000000  73498.000000  92780.000000   \n",
       "\n",
       "             Frozen  Detergents_Paper    Delicassen  \n",
       "count    440.000000        440.000000    440.000000  \n",
       "mean    3071.931818       2881.493182   1524.870455  \n",
       "std     4854.673333       4767.854448   2820.105937  \n",
       "min       25.000000          3.000000      3.000000  \n",
       "25%      742.250000        256.750000    408.250000  \n",
       "50%     1526.000000        816.500000    965.500000  \n",
       "75%     3554.250000       3922.000000   1820.250000  \n",
       "max    60869.000000      40827.000000  47943.000000  "
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df1.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "80644edf",
   "metadata": {},
   "source": [
    "# 数据预处理"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "fe53a104",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import Normalizer"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "7bdad809",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[0.70833271 0.53987376 0.42274083 0.01196489 0.14950522 0.07480852]\n",
      " [0.44219826 0.61470384 0.59953989 0.11040858 0.20634248 0.11128583]\n",
      " [0.39655169 0.5497918  0.47963217 0.15011913 0.2194673  0.48961931]\n",
      " ...\n",
      " [0.36446153 0.38846468 0.7585445  0.01096068 0.37223685 0.04682745]\n",
      " [0.93773743 0.1805304  0.20340427 0.09459392 0.01531    0.19365326]\n",
      " [0.67229603 0.40960124 0.60547651 0.01567967 0.11506466 0.01254374]]\n"
     ]
    }
   ],
   "source": [
    "normalizer = Normalizer()\n",
    "df1_nor = normalizer.fit_transform(df1.iloc[:,2:])\n",
    "print(df1_nor)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "22e2329b",
   "metadata": {},
   "source": [
    "# 轮廓系数找到k"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "a22cad36",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.cluster import KMeans \n",
    "from sklearn.metrics import silhouette_score #轮廓系数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "9b59e0d6",
   "metadata": {},
   "outputs": [],
   "source": [
    "score=[]\n",
    "\n",
    "for k in range(2,20):\n",
    "    cluster = KMeans(n_clusters=k,random_state=0).fit(df1_nor)\n",
    "    score.append(silhouette_score(df1_nor,cluster.labels_))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "c47f3291",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.lines.Line2D at 0x1fb19b99250>"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(range(2,20),score)\n",
    "#给k最大的位置加虚线   #idxmax()[] 取最大索引  因为这边从k=2开始 所以+2\n",
    "plt.axvline(pd.DataFrame(score).idxmax()[0]+2,ls=':')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "a30d960f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "k = pd.DataFrame(score).idxmax()[0]+2\n",
    "k"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5ee520e8",
   "metadata": {},
   "source": [
    "# 建模及可视化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "05797d28",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1,\n",
       "       1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0,\n",
       "       0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0,\n",
       "       0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1,\n",
       "       1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0,\n",
       "       1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1,\n",
       "       1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0,\n",
       "       1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0,\n",
       "       1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0,\n",
       "       1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1,\n",
       "       1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1,\n",
       "       1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0,\n",
       "       0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1,\n",
       "       1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1,\n",
       "       1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1,\n",
       "       1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0,\n",
       "       0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1,\n",
       "       1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1,\n",
       "       0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0,\n",
       "       0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0])"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cluster = KMeans(n_clusters=2,random_state=0).fit(df1_nor)\n",
    "cluster.labels_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "84bc1871",
   "metadata": {},
   "outputs": [],
   "source": [
    "df1_nor_ = pd.DataFrame(df1_nor,columns=df1.columns[2:])\n",
    "df1_nor_['type'] = cluster.labels_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "e1116244",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Fresh</th>\n",
       "      <th>Milk</th>\n",
       "      <th>Grocery</th>\n",
       "      <th>Frozen</th>\n",
       "      <th>Detergents_Paper</th>\n",
       "      <th>Delicassen</th>\n",
       "      <th>type</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.708333</td>\n",
       "      <td>0.539874</td>\n",
       "      <td>0.422741</td>\n",
       "      <td>0.011965</td>\n",
       "      <td>0.149505</td>\n",
       "      <td>0.074809</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.442198</td>\n",
       "      <td>0.614704</td>\n",
       "      <td>0.599540</td>\n",
       "      <td>0.110409</td>\n",
       "      <td>0.206342</td>\n",
       "      <td>0.111286</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.396552</td>\n",
       "      <td>0.549792</td>\n",
       "      <td>0.479632</td>\n",
       "      <td>0.150119</td>\n",
       "      <td>0.219467</td>\n",
       "      <td>0.489619</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.856837</td>\n",
       "      <td>0.077254</td>\n",
       "      <td>0.272650</td>\n",
       "      <td>0.413659</td>\n",
       "      <td>0.032749</td>\n",
       "      <td>0.115494</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.895416</td>\n",
       "      <td>0.214203</td>\n",
       "      <td>0.284997</td>\n",
       "      <td>0.155010</td>\n",
       "      <td>0.070358</td>\n",
       "      <td>0.205294</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>435</th>\n",
       "      <td>0.776890</td>\n",
       "      <td>0.315197</td>\n",
       "      <td>0.419191</td>\n",
       "      <td>0.343549</td>\n",
       "      <td>0.004760</td>\n",
       "      <td>0.057646</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>436</th>\n",
       "      <td>0.990872</td>\n",
       "      <td>0.036146</td>\n",
       "      <td>0.019298</td>\n",
       "      <td>0.113919</td>\n",
       "      <td>0.002349</td>\n",
       "      <td>0.059258</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>437</th>\n",
       "      <td>0.364462</td>\n",
       "      <td>0.388465</td>\n",
       "      <td>0.758545</td>\n",
       "      <td>0.010961</td>\n",
       "      <td>0.372237</td>\n",
       "      <td>0.046827</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>438</th>\n",
       "      <td>0.937737</td>\n",
       "      <td>0.180530</td>\n",
       "      <td>0.203404</td>\n",
       "      <td>0.094594</td>\n",
       "      <td>0.015310</td>\n",
       "      <td>0.193653</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>439</th>\n",
       "      <td>0.672296</td>\n",
       "      <td>0.409601</td>\n",
       "      <td>0.605477</td>\n",
       "      <td>0.015680</td>\n",
       "      <td>0.115065</td>\n",
       "      <td>0.012544</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>440 rows × 7 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "        Fresh      Milk   Grocery    Frozen  Detergents_Paper  Delicassen  \\\n",
       "0    0.708333  0.539874  0.422741  0.011965          0.149505    0.074809   \n",
       "1    0.442198  0.614704  0.599540  0.110409          0.206342    0.111286   \n",
       "2    0.396552  0.549792  0.479632  0.150119          0.219467    0.489619   \n",
       "3    0.856837  0.077254  0.272650  0.413659          0.032749    0.115494   \n",
       "4    0.895416  0.214203  0.284997  0.155010          0.070358    0.205294   \n",
       "..        ...       ...       ...       ...               ...         ...   \n",
       "435  0.776890  0.315197  0.419191  0.343549          0.004760    0.057646   \n",
       "436  0.990872  0.036146  0.019298  0.113919          0.002349    0.059258   \n",
       "437  0.364462  0.388465  0.758545  0.010961          0.372237    0.046827   \n",
       "438  0.937737  0.180530  0.203404  0.094594          0.015310    0.193653   \n",
       "439  0.672296  0.409601  0.605477  0.015680          0.115065    0.012544   \n",
       "\n",
       "     type  \n",
       "0       1  \n",
       "1       0  \n",
       "2       0  \n",
       "3       1  \n",
       "4       1  \n",
       "..    ...  \n",
       "435     1  \n",
       "436     1  \n",
       "437     0  \n",
       "438     1  \n",
       "439     0  \n",
       "\n",
       "[440 rows x 7 columns]"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df1_nor_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "35fdaee4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Fresh</th>\n",
       "      <th>Milk</th>\n",
       "      <th>Grocery</th>\n",
       "      <th>Frozen</th>\n",
       "      <th>Detergents_Paper</th>\n",
       "      <th>Delicassen</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>type</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>190</td>\n",
       "      <td>190</td>\n",
       "      <td>190</td>\n",
       "      <td>190</td>\n",
       "      <td>190</td>\n",
       "      <td>190</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>250</td>\n",
       "      <td>250</td>\n",
       "      <td>250</td>\n",
       "      <td>250</td>\n",
       "      <td>250</td>\n",
       "      <td>250</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      Fresh  Milk  Grocery  Frozen  Detergents_Paper  Delicassen\n",
       "type                                                            \n",
       "0       190   190      190     190               190         190\n",
       "1       250   250      250     250               250         250"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "counts_ = df1_nor_.groupby(by='type').count()\n",
    "counts_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "92a1919f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x1fb19c74b20>"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.pie(counts_['Fresh'],labels=counts_.index,colors=['gold','green'],\n",
    "        autopct='%1.2f%%',\n",
    "       shadow=True, \n",
    "       startangle=90)\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "ee2ab11b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Fresh</th>\n",
       "      <th>Milk</th>\n",
       "      <th>Grocery</th>\n",
       "      <th>Frozen</th>\n",
       "      <th>Detergents_Paper</th>\n",
       "      <th>Delicassen</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>type</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.264083</td>\n",
       "      <td>0.479221</td>\n",
       "      <td>0.661907</td>\n",
       "      <td>0.134295</td>\n",
       "      <td>0.251450</td>\n",
       "      <td>0.105409</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.869573</td>\n",
       "      <td>0.174954</td>\n",
       "      <td>0.226061</td>\n",
       "      <td>0.224904</td>\n",
       "      <td>0.050075</td>\n",
       "      <td>0.074002</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         Fresh      Milk   Grocery    Frozen  Detergents_Paper  Delicassen\n",
       "type                                                                      \n",
       "0     0.264083  0.479221  0.661907  0.134295          0.251450    0.105409\n",
       "1     0.869573  0.174954  0.226061  0.224904          0.050075    0.074002"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "means_ = df1_nor_.groupby(by='type').mean()\n",
    "means_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "a983e6b0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x1fb1c2b3a60>"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "x_lable = means_.index\n",
    "bar_width = 0.1  # 条形宽度\n",
    "index_x_0 = np.arange(0,len(x_lable),0.1) \n",
    "index_x_1 = index_x_0 + 0.7\n",
    "x_tricks=[]\n",
    "\n",
    "for i in range(len(means_.columns)):\n",
    "    x_0_numbers = means_.iloc[0][i]\n",
    "    x_1_numbers = means_.iloc[1][i]\n",
    "    plt.bar(index_x_0[i],height=x_0_numbers,width=bar_width,label=means_.columns[i])\n",
    "    plt.bar(index_x_1[i],height=x_1_numbers,width=bar_width,label=means_.columns[i])\n",
    "\n",
    "plt.xticks([index_x_0[2],index_x_1[2]],means_.index)\n",
    "plt.legend(bbox_to_anchor=(1,1))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "d2a73175",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.12"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
